package com.mfhcd.facepay.model;

import com.mfhcd.facepay.constant.SPConstant;
import com.mfhcd.facepay.global.ServerUrl;
import com.mfhcd.facepay.utils.SPUtils;

/**
 * 服务器请求对象实体
 */
public abstract class RequestModel {
    //不同请求共用的Param
    public static class ModPwdParam extends BaseRequestModel.Param {
        public String id;
        public String password;
        public String newPassword;

        public ModPwdParam() {
            this.id = SPUtils.getString(SPConstant.CUSTOMER_ID);
        }
    }

    public static final class TestReq extends BaseRequestModel {
        @Override
        public String getBaseUrl() {
            return ServerUrl.BASE_URL;
        }

        @Override
        public String getService() {
            return ServerUrl.COMMON_SERVICE;
        }

        @Override
        public String getApi() {
            return ServerUrl.API_GET_IMCODE;
        }

        public static class Param extends BaseRequestModel.Param {
            public String field1;
            public String field2;
            public String loginIP;
        }
    }

    public static final class TrxDataReq extends BaseRequestModel {
        @Override
        public String getBaseUrl() {
            return ServerUrl.BASE_URL;
        }

        @Override
        public String getService() {
            return ServerUrl.COMMON_SERVICE;
        }

        @Override
        public String getApi() {
            return ServerUrl.API_GET_IMCODE;
        }

        @Override
        public String constructUrl() {
            return "http://114.251.122.180:8089/faceScan/faceRouter";
        }

        /*路由方式
  1-路由索引；2-路由索引+手机号后4位；3-保留使用
 */
        public String rout_md;

        /*手机号
         当路由方式为‘2’时出现，传递后4位；当路由方式为‘3’时出现，传递完整手机号。
        */
        public String phone_no;

        /**
         * 人脸数据
         * 原始照片200K以内，JPG格式，SM4加密后再Base64编码。
         */
        public String pic;

        /**
         * 刷脸付口令异或后得到PinBlock，再SM4加密得
         * 到128bit，再Base64编码。当路由方式为‘1’或‘2’时，出现
         */
        public String pin;

        /**
         * 口令加密因子
         * 由终端生成：MMDDhhmmss+6位随机
         * 数，代替主账号来生成PinBlock。
         * 当路由方式为‘1’或‘2’时，出现。
         */
        public String xor_salt;

        /**
         * 活检结果
         */
        public String bio_rslt;

        /**
         * 交易金额
         */
        public String trx_amt;

        /**
         * 订单号
         * 可选上送，如若上送需与支付交易时订单号一致。
         */
        public String order_id;

        /**
         * 交易币种
         */
        public String trx_curr = "156";

        /**
         * 受理机构
         * 应与后续支付交易32域保持一致，后4位应准确标识商户所在地区代码
         */
        public String acq_ins = "834";

        /**
         * 商户代码
         */
        private String mchnt_cd = "111111111111111";

        /**
         * 终端代码
         */
        public String term_cd = "77787878";

        /**
         * 位置信息
         * 经纬度，格式为纬度/经度，+表示北纬、东经，-表示南纬、西经。
         * 举例：+37.12/-121.23
         */
        public String trx_loc;

        /**
         * IP地址
         * 终端交易使用的IP地址，兼容IPV4与 IPV6，不得为内网IP
         */
        public String term_ip;

    }

    public static final class TransReq extends BaseRequestModel {
        /**
         * MSG_ID : 0200
         * PAN : 6214830215995142
         * PRO_COD : 000000
         * TTXN_AMT : 000000000011
         * CSEQ_NO : 00052a
         * IN_MOD : 911
         * CON_MOD : 00
         * PIN_CAP_CODE : 12
         * TRM_NO : 01978239
         * MERC_CD : 834491115200003
         * CCY : 156
         * PIN_DATA : B13660D14AE38BA5
         * SECUR_INF : 2600000000000000
         * RESE_PRI_60 : 22000064000701
         * MAC : 4441334134334445
         */

        private String MSG_ID;
        private String PAN;
        private String PRO_COD;
        private String TTXN_AMT;
        private String CSEQ_NO;
        private String IN_MOD;
        private String CON_MOD;
        private String PIN_CAP_CODE;
        private String TRM_NO;
        private String MERC_CD;
        private String CCY;
        private String PIN_DATA;
        private String SECUR_INF;
        private String RESE_PRI_60;
        private String ORI_MES;
        private String MAC;

        @Override
        public String getBaseUrl() {
            return ServerUrl.BASE_URL;
        }

        @Override
        public String getService() {
            return ServerUrl.COMMON_SERVICE;
        }

        @Override
        public String getApi() {
            return ServerUrl.API_GET_IMCODE;
        }

        @Override
        public String constructUrl() {
            return "http://114.251.122.180:8089/faceScan/faceTrade";
        }

        public String getMSG_ID() {
            return MSG_ID;
        }

        public void setMSG_ID(String MSG_ID) {
            this.MSG_ID = MSG_ID;
        }

        public String getPAN() {
            return PAN;
        }

        public void setPAN(String PAN) {
            this.PAN = PAN;
        }

        public String getPRO_COD() {
            return PRO_COD;
        }

        public void setPRO_COD(String PRO_COD) {
            this.PRO_COD = PRO_COD;
        }

        public String getTTXN_AMT() {
            return TTXN_AMT;
        }

        public void setTTXN_AMT(String TTXN_AMT) {
            this.TTXN_AMT = TTXN_AMT;
        }

        public String getCSEQ_NO() {
            return CSEQ_NO;
        }

        public void setCSEQ_NO(String CSEQ_NO) {
            this.CSEQ_NO = CSEQ_NO;
        }

        public String getIN_MOD() {
            return IN_MOD;
        }

        public void setIN_MOD(String IN_MOD) {
            this.IN_MOD = IN_MOD;
        }

        public String getCON_MOD() {
            return CON_MOD;
        }

        public void setCON_MOD(String CON_MOD) {
            this.CON_MOD = CON_MOD;
        }

        public String getPIN_CAP_CODE() {
            return PIN_CAP_CODE;
        }

        public void setPIN_CAP_CODE(String PIN_CAP_CODE) {
            this.PIN_CAP_CODE = PIN_CAP_CODE;
        }

        public String getTRM_NO() {
            return TRM_NO;
        }

        public void setTRM_NO(String TRM_NO) {
            this.TRM_NO = TRM_NO;
        }

        public String getMERC_CD() {
            return MERC_CD;
        }

        public void setMERC_CD(String MERC_CD) {
            this.MERC_CD = MERC_CD;
        }

        public String getCCY() {
            return CCY;
        }

        public void setCCY(String CCY) {
            this.CCY = CCY;
        }

        public String getPIN_DATA() {
            return PIN_DATA;
        }

        public void setPIN_DATA(String PIN_DATA) {
            this.PIN_DATA = PIN_DATA;
        }

        public String getSECUR_INF() {
            return SECUR_INF;
        }

        public void setSECUR_INF(String SECUR_INF) {
            this.SECUR_INF = SECUR_INF;
        }

        public String getRESE_PRI_60() {
            return RESE_PRI_60;
        }

        public void setRESE_PRI_60(String RESE_PRI_60) {
            this.RESE_PRI_60 = RESE_PRI_60;
        }

        public String getORI_MES() {
            return ORI_MES;
        }

        public void setORI_MES(String ORI_MES) {
            this.ORI_MES = ORI_MES;
        }

        public String getMAC() {
            return MAC;
        }

        public void setMAC(String MAC) {
            this.MAC = MAC;
        }
    }
}
